#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<sys/wait.h>
#include<unistd.h>
#include<errno.h>
#include<stdlib.h>
#include<string.h>


int main()
{

  //向显示器打印的几种做法
  //C库函数
  printf("hello printf\n");
  //printf("hello printf");
  fprintf(stdout,"hello fprintf\n");
  //fprintf(stdout,"hello fprintf");
  const char* s="hello fputs\n";
  //const char* s="hello fputs";
  fputs(s,stdout);

  //系统调用
  const char* ss="hello write\n";
  //const char* ss="hello write";
  write(1,ss,strlen(ss));

  //语言级缓冲区验证性实验
  fork();

  return 0;
}






//int main()
//{
//
//  const char* filename="log.txt";
//  int fd=open(filename,O_RDONLY);
//  if(fd<0)
//  {
//    perror("open");
//    return 1;
//  }
//
//  char buffer[1024];
//  //成功返回读取的字节数，失败返回 -1 并设置 errno，无数据可读（如非阻塞模式）或到达文件尾返回 0
//  ssize_t n=read(fd,buffer,sizeof(buffer)-1);
//  if(n>0)
//  {
//    buffer[n]=0;
//    printf("%s\n",buffer);
//  }
//
//  close(fd);
//  return 0;
//}






//int main()
//{
//  FILE* fp=fopen("del.txt","a");
//
//  sleep(5);
//
//  const char ch[]="hahahahhahahh!\n";
//  fwrite(ch,sizeof(char),strlen(ch),fp);
//  fclose(fp);
//  return 0;
//}



//int main()
//{
//  printf("正在向文件写入...\n");
//  FILE* file=fopen("bite.txt","w");
//  if(file==NULL)
//  {
//    perror("fopen");
//    return -1;
//  }
//  const char ch[]="liunx so easy!";
//  fwrite(ch,sizeof(char),strlen(ch),file);
//  fclose(file);
//  sleep(5);
//  printf("写入成功!\n");
//  sleep(1);
//  printf("正在读取文件...\n");
//  sleep(5);
//  pid_t id=fork();
//  if(id<0)
//  {
//    perror("fork");
//    return -2;
//  }
//  else if(id>0)
//  {
//    file=fopen("bite.txt","r");
//    if(file==NULL)
//    {
//      perror("sun fopen");
//      return -3;
//    }
//    char ch[128];
//    fseek(file,0,SEEK_SET);
//    fread(ch,sizeof(char),128,file);
//    printf("%s\n",ch);
//    sleep(1);
//    fclose(file);
//    printf("读取成功!\n");
//  }
//  else
//  {
//    waitpid(id,NULL,0);
//  }
//  return 0;
//}




//int main()
//{
//  pid_t id=fork();
//  if(id==-1)
//  {
//    perror("进程创建失败!");
//    exit(errno);
//  }
//  else if(id==0)
//  {
//    printf("I am child process, pid: %d\n",getpid());
//    sleep(8);
//    exit(0);
//  }
//
//  int status=0;
//  waitpid(id,&status,0);
//
//  printf("退出码：%d,标志位：%d,退出信号：%d\n",WEXITSTATUS(status),WCOREDUMP(status),WTERMSIG(status));
//
//  return 0;
//}
